Skip to content

Fix saved search state not updating correctly after offline deletion#62649

Merged
mountiny merged 1 commit into
Expensify:mainfrom
callstack-internal:fix/offline-saved-search-sync
May 30, 2025
Merged

Fix saved search state not updating correctly after offline deletion#62649
mountiny merged 1 commit into
Expensify:mainfrom
callstack-internal:fix/offline-saved-search-sync

Conversation

@OlimpiaZurek

@OlimpiaZurek OlimpiaZurek commented May 23, 2025

Copy link
Copy Markdown
Contributor

Explanation of Change

Problem

When deleting a saved search while offline and then returning online, the "Saved" label was not being handled correctly. The issue stemmed from the saved searches logic being placed inside a useCallback, which may not re-run when the network status changes.

Solution
I refactored the saved searches handling into a separate useMemo hook. This ensures the logic responds properly to changes in network status and updates the saved searches data as expected.

Fixed Issues

$ #62531
PROPOSAL:

Tests

Precondition:

  • Have one saved search.
  1. Go to staging.new.expensify.com
  2. Go to Reports.
  3. Go offline.
  4. Tap bookmark icon.
  5. Tap 3-dot menu > Delete.
  6. Delete the saved search.
  7. Tap bookmark icon.
  8. Go online with the bottom modal open.
  9. "Saved' label will disappear after deleting saved search offline and returning online.
  • Verify that no errors appear in the JS console

Offline tests

N/A

QA Steps

Same as tests
// TODO: These must be filled out, or the issue title must include "[No QA]."

  • Verify that no errors appear in the JS console

PR Author Checklist

  • I linked the correct issue in the ### Fixed Issues section above
  • I wrote clear testing steps that cover the changes made in this PR
    • I added steps for local testing in the Tests section
    • I added steps for the expected offline behavior in the Offline steps section
    • I added steps for Staging and/or Production testing in the QA steps section
    • I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
    • I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
  • I included screenshots or videos for tests on all platforms
  • I ran the tests on all platforms & verified they passed on:
    • Android: Native
    • Android: mWeb Chrome
    • iOS: Native
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
    • MacOS: Desktop
  • I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
  • I verified there are no new alerts related to the canBeMissing param for useOnyx
  • I followed proper code patterns (see Reviewing the code)
    • I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
      • If any non-english text was added/modified, I used JaimeGPT to get English > Spanish translation. I then posted it in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:
    • I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
    • I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
    • I verified the JSDocs style guidelines (in STYLE.md) were followed
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I followed the guidelines as stated in the Review Guidelines
  • I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
  • I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • I verified any variables that can be defined as constants (ie. in CONST.ts or at the top of the file that uses the constant) are defined as such
  • I verified that if a function's arguments changed that all usages have also been updated correctly
  • If any new file was added I verified that:
    • The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
MacOS: Desktop

@OlimpiaZurek OlimpiaZurek marked this pull request as ready for review May 23, 2025 14:01
@OlimpiaZurek OlimpiaZurek requested a review from a team as a code owner May 23, 2025 14:01
@melvin-bot melvin-bot Bot requested review from rushatgabhane and removed request for a team May 23, 2025 14:02
@melvin-bot

melvin-bot Bot commented May 23, 2025

Copy link
Copy Markdown

@rushatgabhane Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]

@rushatgabhane

rushatgabhane commented May 29, 2025

Copy link
Copy Markdown
Member

Reviewer Checklist

  • I have verified the author checklist is complete (all boxes are checked off).
  • I verified the correct issue is linked in the ### Fixed Issues section above
  • I verified testing steps are clear and they cover the changes made in this PR
    • I verified the steps for local testing are in the Tests section
    • I verified the steps for Staging and/or Production testing are in the QA steps section
    • I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
  • I checked that screenshots or videos are included for tests on all platforms
  • I included screenshots or videos for tests on all platforms
  • I verified that the composer does not automatically focus or open the keyboard on mobile unless explicitly intended. This includes checking that returning the app from the background does not unexpectedly open the keyboard.
  • I verified tests pass on all platforms & I tested again on:
    • Android: HybridApp
    • Android: mWeb Chrome
    • iOS: HybridApp
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
    • MacOS: Desktop
  • If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
  • I verified there are no new alerts related to the canBeMissing param for useOnyx
  • I verified proper code patterns were followed (see Reviewing the code)
    • I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
    • I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
    • I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
    • I verified the JSDocs style guidelines (in STYLE.md) were followed
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I verified that this PR follows the guidelines as stated in the Review Guidelines
  • I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
  • I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • I verified any variables that can be defined as constants (ie. in CONST.ts or at the top of the file that uses the constant) are defined as such
  • If a new component is created I verified that:
    • A similar component doesn't exist in the codebase
    • All props are defined accurately and each prop has a /** comment above it */
    • The file is named correctly
    • The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
    • The only data being stored in the state is data necessary for rendering and nothing else
    • For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
    • Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
    • All JSX used for rendering exists in the render method
    • The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions
  • If any new file was added I verified that:
    • The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • For any bug fix or new feature in this PR, I verified that sufficient unit tests are included to prevent regressions in this flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
  • I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: HybridApp
WhatsApp.Video.2025-05-29.at.21.22.42.mp4
Android: mWeb Chrome
iOS: HybridApp

Uploading Screen Recording 2025-05-29 at 19.40.09.mov…

iOS: mWeb Safari
Screen.Recording.2025-05-29.at.19.40.09.mov
Screen.Recording.2025-05-29.at.19.39.09.mov
MacOS: Chrome / Safari
Screen.Recording.2025-05-29.at.19.02.26.mov
MacOS: Desktop

@rushatgabhane rushatgabhane left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@mountiny mountiny left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @OlimpiaZurek @rushatgabhane I updated the test/ QA steps, please dont forget to do that on PRs when they are not NoQA. Thanks!

@mountiny mountiny merged commit c10f032 into Expensify:main May 30, 2025
19 of 68 checks passed
@OSBotify

Copy link
Copy Markdown
Contributor

✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

@github-actions github-actions Bot added the DeployBlockerCash This issue or pull request should block deployment label May 30, 2025
@github-actions

Copy link
Copy Markdown
Contributor

Performance Comparison Report 📊

⚠️ Some tests did not pass successfully, so some results are omitted from final report: Open search router TTI, Chat opening, Linking, Money request

Significant Changes To Duration

Name Duration
App start time contentAppeared_To_screenTTI 989.016 ms → 1118.591 ms (+129.575 ms, +13.1%) 🔴
Show details
Name Duration
App start time contentAppeared_To_screenTTI Baseline
Mean: 989.016 ms
Stdev: 208.366 ms (21.1%)
Runs: 582.70958600007 591.8178340001032 595.1838090000674 596.1359000001103 599.0055840001442 609.9838040000759 616.8292350000702 642.4105719998479 659.084228000138 664.3103880002163 675.5127519997768 690.3122149999253 699.8899610000663 732.9033809998073 761.8397400001995 781.2053200001828 976.6980079999194 984.0443190000951 1001.5435159998015 1023.1572110000998 1025.9141710000113 1040.2478080000728 1056.7261290000752 1070.6761230002157 1073.363067000173 1081.6393050001934 1085.6747840000317 1087.430583000183 1091.585059999954 1092.5534270000644 1096.3950399998575 1099.5349499997683 1099.9990240000188 1103.092581000179 1104.2726579997689 1105.0536930002272 1110.0752090001479 1114.396004000213 1120.9556640000083 1121.0911070001312 1124.650193999987 1124.9967000000179 1126.1153899999335 1126.1643489999697 1127.5901540000923 1130.0918330000713 1136.8799209999852 1138.5289599997923 1141.3008940001018 1143.7115509998985 1147.4794979998842 1147.9855419998057 1149.6622210000642 1164.5607870002277 1168.1054600002244 1174.9629850001074 1187.1687260000035 1190.9501769999042 1200.4804730000906 1224.2947530001402

Current
Mean: 1118.591 ms
Stdev: 65.749 ms (5.9%)
Runs: 976.897754999809 988.1829960001633 1009.9796959999949 1013.2569690002128 1014.7085150000639 1042.772841999773 1050.69251300022 1063.6247620000504 1068.6370709999464 1069.287413999904 1073.3593729999848 1073.852948000189 1077.6446870001964 1082.55772300018 1086.0716160000302 1086.622744999826 1089.195042999927 1092.1096499999985 1092.582078000065 1097.499497000128 1101.175338999834 1107.2712639998645 1113.5378319998272 1116.517514000181 1116.7643189998344 1120.9769759997725 1124.4540650001727 1127.4919580002315 1131.0402730000205 1133.5367629998364 1141.5276330001652 1144.0879190000705 1150.3018919997849 1165.0889030001126 1172.362430000212 1178.7746500000358 1179.9309069998562 1196.3328459998593 1198.2081630001776 1198.4709089999087 1199.31197099993 1202.6551140001975 1202.91492999997 1204.0835319999605 1216.5085260001943 1222.0327010001056 1258.881142000202

Meaningless Changes To Duration

Show entries
Name Duration
App start time appCreation 74.283 ms → 73.559 ms (-0.724 ms, -1.0%)
App start time appCreationEnd_To_contentAppeared 522.000 ms → 519.733 ms (-2.267 ms, ±0.0%)
App start time nativeLaunch 26.655 ms → 25.930 ms (-0.725 ms, -2.7%)
App start time nativeLaunchEnd_To_appCreationStart 82.492 ms → 80.533 ms (-1.958 ms, -2.4%)
App start time TTI 1695.466 ms → 1750.051 ms (+54.586 ms, +3.2%)
App start time runJsBundle 342.667 ms → 341.283 ms (-1.383 ms, ±0.0%)
App start time regularAppStart 0.025 ms → 0.026 ms (+0.001 ms, +5.2%)
App start time (CPU) 148.331 % → 147.688 % (-0.643 %, ±0.0%)
App start time (FPS) 60.000 FPS → 60.000 FPS
App start time (RAM) 363.281 MB → 367.693 MB (+4.412 MB, +1.2%)
App start time (CPU/JS) 0.000 % → 0.000 %
App start time (CPU/UI) 26.473 % → 25.851 % (-0.622 %, -2.3%)
Report typing Composer typing rerender count 1.000 renders → 1.000 renders
Report typing Message sent 393.913 ms → 388.272 ms (-5.642 ms, -1.4%)
Report typing (CPU) 94.488 % → 88.230 % (-6.259 %, -6.6%)
Report typing (FPS) 60.000 FPS → 60.000 FPS
Report typing (RAM) 451.652 MB → 446.029 MB (-5.622 MB, -1.2%)
Report typing (CPU/JS) 0.000 % → 0.000 %
Report typing (CPU/UI) 21.922 % → 21.666 % (-0.257 %, -1.2%)
Show details
Name Duration
App start time appCreation Baseline
Mean: 74.283 ms
Stdev: 9.140 ms (12.3%)
Runs: 52 58 62 63 63 63 64 65 66 66 66 67 67 67 67 67 68 68 68 68 69 70 70 71 71 72 73 73 73 73 73 74 74 74 75 76 76 76 77 78 78 78 79 80 80 81 81 83 83 84 84 85 86 86 86 87 88 91 93 101

Current
Mean: 73.559 ms
Stdev: 9.188 ms (12.5%)
Runs: 54 58 59 61 63 64 64 64 64 64 65 65 66 67 67 67 67 67 67 68 68 68 69 70 70 71 71 72 72 73 73 74 75 75 75 76 76 77 78 78 78 79 79 79 79 79 81 81 81 83 83 84 85 86 87 89 91 97 97
App start time appCreationEnd_To_contentAppeared Baseline
Mean: 522.000 ms
Stdev: 57.473 ms (11.0%)
Runs: 407 409 413 420 428 439 454 458 465 465 471 475 479 481 483 486 487 489 493 495 496 496 498 498 500 504 510 513 516 519 520 520 525 529 534 540 542 544 549 551 552 556 558 559 563 575 576 576 578 578 580 583 584 590 596 597 601 602 654 661

Current
Mean: 519.733 ms
Stdev: 47.360 ms (9.1%)
Runs: 420 422 451 454 456 463 467 471 472 473 474 477 477 478 480 483 485 486 487 491 491 492 492 497 498 500 503 509 512 513 518 520 528 530 531 532 532 534 539 542 546 550 557 561 562 562 566 569 571 572 573 574 578 580 581 585 588 593 608 628
App start time nativeLaunch Baseline
Mean: 26.655 ms
Stdev: 3.235 ms (12.1%)
Runs: 22 22 22 22 22 23 23 23 23 23 23 24 24 24 25 25 25 25 25 25 25 25 25 26 26 26 26 26 26 26 26 27 27 27 27 27 27 27 27 27 28 28 28 28 29 29 29 29 30 30 30 31 32 33 33 34 34 35

Current
Mean: 25.930 ms
Stdev: 3.534 ms (13.6%)
Runs: 21 21 21 21 22 22 22 22 22 23 23 23 23 23 23 23 24 24 24 24 24 24 24 25 25 25 25 25 25 25 26 26 26 26 26 26 26 27 27 27 27 27 28 29 29 29 29 30 30 30 31 31 32 32 33 33 37
App start time nativeLaunchEnd_To_appCreationStart Baseline
Mean: 82.492 ms
Stdev: 9.975 ms (12.1%)
Runs: 63 66 68 69 69 70 70 71 72 72 73 73 73 74 75 76 76 76 77 78 78 78 78 79 79 79 80 80 81 82 83 83 83 84 85 85 85 85 86 87 87 87 88 88 89 91 91 91 91 92 92 93 96 97 97 98 105 105 108

Current
Mean: 80.533 ms
Stdev: 10.707 ms (13.3%)
Runs: 57 60 60 61 63 66 67 68 69 70 71 71 71 71 73 73 74 74 74 74 74 75 75 76 78 79 79 79 80 80 82 82 83 84 84 85 85 86 86 86 86 88 88 89 89 90 90 90 92 92 92 93 93 94 94 97 97 97 97 99
App start time TTI Baseline
Mean: 1695.466 ms
Stdev: 217.123 ms (12.8%)
Runs: 1194.1359000001103 1253.8292350000702 1258.084228000138 1283.8178340001032 1309.70958600007 1345.5127519997768 1352.410571999848 1370.983804000076 1392.3103880002163 1394.3122149999253 1405.9033809998073 1409.0055840001442 1439.8397400001995 1459.1838090000674 1459.8899610000663 1474.2053200001828 1632.6980079999194 1640.0443190000951 1647.7261290000752 1669.5534270000644 1692.6761230002157 1700.5435159998015 1703.5349499997683 1706.6747840000317 1724.0536930002272 1743.2478080000728 1753.9141710000113 1768.1643489999697 1773.1572110000998 1793.5289599997923 1802.1153899999335 1807.0918330000713 1813.6393050001934 1822.363067000173 1822.7115509998985 1825.3008940001018 1832.8799209999852 1838.5607870002277 1839.5901540000923 1843.3950399998575 1845.430583000183 1846.1054600002244 1851.585059999954 1853.0911070001312 1862.092581000179 1873.9501769999042 1873.9967000000179 1874.0752090001479 1874.9629850001074 1878.6622210000642 1879.2726579997689 1880.650193999987 1888.4804730000906 1894.9556640000083 1899.1687260000035 1908.396004000213 1931.2947530001402 1932.9855419998057 1936.9990240000188 1941.4794979998842

Current
Mean: 1750.051 ms
Stdev: 169.899 ms (9.7%)
Runs: 1365.0734040001407 1370.90109199984 1376.8417099998333 1391.619394000154 1402.3598509998992 1402.4357380000874 1421.71783100022 1426.4802760002203 1428.6709610000253 1640.6247620000504 1641.1829960001633 1657.897754999809 1674.3593729999848 1675.2569690002128 1676.772841999773 1699.708515000064 1714.9796959999949 1720.852948000189 1747.4540650001727 1772.0879190000705 1772.69251300022 1791.499497000128 1793.622744999826 1807.0716160000302 1814.3018919997849 1816.9309069998562 1828.7746500000358 1830.0402730000205 1831.55772300018 1832.362430000212 1837.582078000065 1840.6370709999464 1843.2712639998645 1844.2081630001776 1846.0889030001126 1846.7643189998344 1847.287413999904 1854.195042999927 1858.1096499999985 1863.4919580002315 1864.5276330001652 1866.175338999834 1867.91492999997 1872.5085260001943 1872.517514000181 1878.4709089999087 1879.5378319998272 1882.5367629998364 1884.6551140001975 1888.0835319999605 1891.31197099993 1892.9769759997725 1897.3328459998593 1905.6446870001964 1925.0327010001056 1925.881142000202
App start time runJsBundle Baseline
Mean: 342.667 ms
Stdev: 25.721 ms (7.5%)
Runs: 281 281 291 291 294 294 295 295 298 298 299 299 300 300 300 300 309 309 318 318 321 321 323 323 323 323 327 327 328 328 328 328 329 329 330 330 331 331 334 334 335 335 337 337 337 337 338 338 340 340 344 344 344 344 345 345 345 345 347 347 347 347 348 348 349 349 349 349 350 350 351 351 354 354 354 354 354 354 355 355 355 355 356 356 357 357 357 357 359 359 362 362 363 363 364 364 366 366 366 366 369 369 371 371 372 372 373 373 373 373 374 374 380 380 384 384 385 385 392 392

Current
Mean: 341.283 ms
Stdev: 21.010 ms (6.2%)
Runs: 289 289 299 299 303 303 308 308 310 310 310 310 316 316 320 320 320 320 321 321 322 322 322 322 323 323 324 324 325 325 327 327 327 327 329 329 329 329 331 331 331 331 332 332 333 333 333 333 334 334 334 334 336 336 337 337 340 340 341 341 341 341 344 344 344 344 345 345 349 349 349 349 351 351 354 354 355 355 355 355 355 355 356 356 357 357 357 357 358 358 359 359 360 360 362 362 363 363 364 364 364 364 364 364 365 365 366 366 366 366 367 367 367 367 368 368 374 374 392 392
App start time regularAppStart Baseline
Mean: 0.025 ms
Stdev: 0.003 ms (13.0%)
Runs: 0.01904299994930625 0.01920600002631545 0.020141999702900648 0.020426999777555466 0.020874000154435635 0.021361999679356813 0.021687999833375216 0.0217289999127388 0.021972999908030033 0.022053999826312065 0.02237899973988533 0.022379000205546618 0.022704999893903732 0.022909000050276518 0.022948999889194965 0.023112000431865454 0.02315300004556775 0.02343699987977743 0.023477999959141016 0.023477999959141016 0.0235190000385046 0.023558999877423048 0.023641000036150217 0.023804000113159418 0.023966999724507332 0.02413000026717782 0.0242510000243783 0.024374000262469053 0.024618000257760286 0.024657999631017447 0.02469899971038103 0.02486200025305152 0.02494300017133355 0.025187999941408634 0.02522800024598837 0.0253090001642704 0.02551200008019805 0.025553999934345484 0.025715999770909548 0.02595999976620078 0.026163999922573566 0.026245000306516886 0.02649000007659197 0.026570999994874 0.026856000069528818 0.027710000053048134 0.027872999664396048 0.027873000130057335 0.0281980000436306 0.029053000267595053 0.029296999797225 0.029378000181168318 0.030396000016480684 0.0310869999229908 0.0314539996907115 0.0330400001257658 0.03438299987465143

Current
Mean: 0.026 ms
Stdev: 0.004 ms (14.1%)
Runs: 0.019082999788224697 0.020874000154435635 0.021525000222027302 0.021850999910384417 0.021851000376045704 0.022013999987393618 0.02225799998268485 0.022704999893903732 0.022785999812185764 0.022909000050276518 0.022950000129640102 0.023315999656915665 0.023560000117868185 0.023680999875068665 0.02380300033837557 0.023804000113159418 0.023924999870359898 0.023965999949723482 0.023966999724507332 0.024374000262469053 0.024536000099033117 0.024983000010252 0.025024000089615583 0.025186999700963497 0.025349999777972698 0.025471999775618315 0.02551200008019805 0.02551200008019805 0.025797000154852867 0.026001000311225653 0.02632599975913763 0.02632599975913763 0.0264079999178648 0.026570999994874 0.026570999994874 0.026774000376462936 0.026814999990165234 0.026856000069528818 0.0273029999807477 0.0274660000577569 0.027588000055402517 0.02783200005069375 0.028117000125348568 0.028156999964267015 0.028483000118285418 0.029215000104159117 0.029378999955952168 0.030598999932408333 0.03080199984833598 0.031006000004708767 0.031574999913573265 0.03238900005817413 0.03295899974182248 0.0333660002797842 0.036499000154435635 0.0371500002220273
App start time (CPU) Baseline
Mean: 148.331 %
Stdev: 8.026 % (5.4%)
Runs: 135.10096821874896 137.50118674491497 137.7131450022269 138.38527160942778 138.98306766189296 140.06532150221008 140.31980268342969 140.35059155217604 140.4307849733447 140.8825394337722 141.16509852493587 141.58927397857454 141.61614202511322 141.8521044202449 141.92773142550192 142.55201685212884 142.6209981910492 142.81844742662244 142.83736415838985 143.05769573675897 143.44701132671432 144.1939223862506 144.5158411423472 144.5264231529292 144.60892036396828 144.73012907021 145.13979259707435 145.24580497080362 145.2884294924018 145.90956838206708 146.1362046385853 146.67183585828465 147.05102717031156 147.729055258467 147.9710950528071 148.41904973969105 149.0990351313184 149.33194933836018 149.80876494023903 150.348555925317 151.17514817574187 151.45512730870206 151.70503646596816 151.81387111057438 152.19794168765986 153.00108444528263 153.91788071025536 154.12706879031975 154.43410514051334 155.93995990292285 158.71679760568648 159.45318314117716 160.0746868374051 161.78281015310944 162.65230323853152 162.7202860750777 162.9406555167171 163.57433222973452 167.92611653293517 168.33879767698897

Current
Mean: 147.688 %
Stdev: 6.469 % (4.4%)
Runs: 133.2871243620931 138.58892818838206 138.96149097465542 139.28627079503906 139.394067586818 139.77353505840733 140.33901991035654 140.74330708249255 140.9230037961818 140.93099785100046 141.12027176691592 141.1461977208856 141.29155522199775 141.4920117270804 141.5422135579041 141.98778582108707 142.05751883115585 142.21317929448423 143.00514819813066 143.06054436916162 143.88556220891545 144.69562289034906 145.06621285980492 145.64477305528277 145.79750692669955 145.82012623687328 146.1129781172781 146.54522514625702 146.98917050086436 147.06851870609643 147.43658974635895 148.02459209836843 148.32780173587923 148.60726109571107 148.70523411586706 149.74214701365108 150.43800934733085 150.6921366744144 151.07919542789287 151.15103127079178 151.1659555027882 151.45935435226892 151.79329314633046 152.1857398873528 152.57746228224545 152.61038245709682 152.78901753057215 152.86061805375707 153.0156197402221 153.08993066007594 153.73414177553337 154.38618324544979 154.92561688289732 155.58219451770162 156.6491449208235 156.67311032006103 156.73987362299965 158.89725003975838 160.24501704330928 166.9421223662044
App start time (FPS) Baseline
Mean: 60.000 FPS
Stdev: 0.000 FPS (0.0%)
Runs: 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60

Current
Mean: 60.000 FPS
Stdev: 0.000 FPS (0.0%)
Runs: 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60
App start time (RAM) Baseline
Mean: 363.281 MB
Stdev: 8.391 MB (2.3%)
Runs: 343.318359375 348.47265625 349.60546875 350.3645833333333 350.478515625 352.7994791666667 353.2096354166667 354.4609375 354.4947916666667 354.935546875 355.02734375 355.125 356.5390625 356.8841145833333 357.234375 357.4934895833333 358.1380208333333 358.2018229166667 359.08203125 359.6393229166667 360.1627604166667 360.5716145833333 360.609375 360.7942708333333 361.234375 361.2903645833333 361.3229166666667 361.6809895833333 362.388671875 363.4583333333333 363.6002604166667 363.9466145833333 364.5416666666667 364.6653645833333 365.5625 366.39453125 366.5169270833333 366.671875 366.9010416666667 367.5833333333333 367.6236979166667 368.53125 368.5559895833333 368.6953125 368.841796875 369.3346354166667 369.9440104166667 371.0716145833333 373.44921875 373.5442708333333 374.2799479166667 374.4427083333333 374.70703125 375.0963541666667 377.32421875 379.0260416666667 379.9557291666667 380.46875

Current
Mean: 367.693 MB
Stdev: 6.082 MB (1.7%)
Runs: 353.359375 354.240234375 355.7291666666667 356.0377604166667 356.3333333333333 356.4609375 358.3515625 358.671875 363.59375 364.04296875 364.0872395833333 364.1588541666667 364.4752604166667 364.9309895833333 365.0533854166667 365.9348958333333 366.0572916666667 366.19921875 366.4466145833333 367.0439453125 367.19140625 367.8893229166667 368.0638020833333 368.1692708333333 368.2096354166667 368.4127604166667 368.7236328125 368.7330729166667 369.1822916666667 369.2955729166667 370.53125 370.5807291666667 370.8932291666667 370.9388020833333 371.06640625 371.11328125 371.1341145833333 371.2239583333333 371.2278645833333 371.2942708333333 371.9140625 372.2317708333333 372.5455729166667 373.154296875 373.9830729166667 374.2994791666667 374.4361979166667 374.474609375 374.8841145833333 375.7057291666667 377.4231770833333 379.87890625
App start time (CPU/JS) Baseline
Mean: 0.000 %
Stdev: 0.000 % (NaN%)
Runs: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Current
Mean: 0.000 %
Stdev: 0.000 % (NaN%)
Runs: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
App start time (CPU/UI) Baseline
Mean: 26.473 %
Stdev: 2.073 % (7.8%)
Runs: 22.6 23 23.3 23.6 23.8 23.8 23.9 23.9 24.1 24.5 24.7 24.7 24.7 25.2 25.2 25.3 25.3 25.3 25.3 25.8 25.9 26 26 26 26 26.1 26.1 26.2 26.5 26.5 26.6 26.6 26.6 26.7 26.7 26.8 27.3 27.3 27.4 27.4 27.9 28 28 28 28 28.7 28.8 28.9 29 29 29.3 29.6 31 31.2 31.9

Current
Mean: 25.851 %
Stdev: 1.922 % (7.4%)
Runs: 21.9 22.9 23.3 23.3 23.3 23.3 23.9 24 24 24 24 24.1 24.1 24.5 24.6 24.6 24.6 24.7 24.7 24.8 25.1 25.2 25.2 25.3 25.3 25.4 25.4 25.4 25.8 25.8 25.8 25.9 25.9 25.9 26 26 26 26 26.4 26.5 26.6 27 27.3 27.3 27.3 27.4 27.4 27.4 28.6 28.6 28.6 28.6 28.7 28.8 30 30.5 30.5
Report typing Composer typing rerender count Baseline
Mean: 1.000 renders
Stdev: 0.000 renders (0.0%)
Runs: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Current
Mean: 1.000 renders
Stdev: 0.000 renders (0.0%)
Runs: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Report typing Message sent Baseline
Mean: 393.913 ms
Stdev: 61.754 ms (15.7%)
Runs: 307.00903399987146 311.2394610000774 311.69909700006247 313.05338599998504 313.34273299993947 315.02339700004086 320.30875600036234 320.3111159997061 320.55326399952173 321.8749190000817 326.2092699999921 327.12683099973947 327.3840330000967 328.7675789995119 331.7102049998939 332.10449300007895 332.2036540005356 332.65401200018823 333.65271000005305 334.7049970002845 334.947714000009 335.06701700016856 336.4536129999906 336.47794599924237 340.81302999984473 342.13883499987423 349.5557860005647 411.00199400028214 426.22802799986675 428.82906100014225 429.97542300028726 431.3828949998133 431.51098600029945 431.6498210001737 435.82010899996385 436.3769129998982 436.86116599990055 437.29837999958545 440.43013500003144 443.2280280003324 443.9416510001756 446.9801030000672 449.40104199945927 449.9667560001835 450.06848200038075 451.50301100034267 453.4308679997921 455.0847169999033 459.5651450008154 460.2735190000385 460.30615299986675 460.6814789995551 460.82450400013477 462.4029550002888 462.6441660001874 463.4097900004126 467.1933180000633 471.5538739999756 473.760172999464 474.83662899956107

Current
Mean: 388.272 ms
Stdev: 63.865 ms (16.4%)
Runs: 307.640625 310.4527179999277 310.8381350003183 312.08935600006953 312.3816320002079 312.4037679997273 313.19087699986994 313.5916749997996 314.7317710001953 314.83081000018865 315.45556699996814 316.2093509999104 316.7051189998165 323.1266280002892 323.990275000222 326.38073800038546 327.14864100003615 329.0531820002943 330.3662510002032 330.8721109991893 331.04886900028214 332.1736249998212 332.58435100037605 332.6059570000507 333.12011700030416 334.9554850002751 337.5650639999658 342.0734870005399 343.0879730004817 422.4868980003521 423.1110439999029 426.14347400004044 426.9941810001619 430.10583500005305 430.10677099972963 431.7253419999033 434.9475909997709 444.05896000005305 446.1931559992954 446.6586920004338 447.7412109998986 448.319376999978 449.2020260002464 449.86958799976856 450.8484699996188 453.2889809999615 454.08223500009626 456.41186500061303 457.6151530002244 458.51412000041455 458.97343000024557 459.2489010002464 460.03324400028214 460.141072999686 460.61348500009626 460.9424639996141 462.2270099995658 466.12235599942505 466.1563720004633 472.75419100001454
Report typing (CPU) Baseline
Mean: 94.488 %
Stdev: 4.260 % (4.5%)
Runs: 85.6766804526643 86.41311822050693 87.18743859828594 88.73259535655609 89.05118999334896 89.26382514183051 89.59232319474907 89.67662303679779 89.98480306790205 90.14020963606303 90.58565153890864 90.70131750432641 90.77673319363082 91.43287147023159 91.49712086722062 91.76206050347314 91.93111595951912 92.15407030047201 92.42952571606307 92.44092251251405 92.94693914177641 93.09035183196997 93.14796664354901 93.16350969693156 93.47548708527795 93.83306915815551 94.3687365292658 94.53789468985663 94.83625189191456 95.36922596984155 95.58367535373617 95.6377848412126 95.68989181895985 95.992936017226 96.0650797367817 96.12509113628465 96.13867824742276 96.26459219036386 96.63952982375534 96.78340023233713 97.75893311165117 98.17485813444047 99.07008348600765 99.14821848279074 99.14860801767861 99.35580717018613 99.61019101044307 99.91453508462195 100.02662246951078 100.27888956834094 100.63744801721293 100.73504965542003 102.73752847862025 104.65344635612396

Current
Mean: 88.230 %
Stdev: 4.277 % (4.8%)
Runs: 81.1329781578607 81.20190108415727 81.59468539762038 82.24974763258365 82.6073189625422 83.0944976925949 83.24206331838528 83.48646207775461 83.61560098835517 83.69692339272362 83.80933035478333 84.31190189251474 84.31582949002686 84.33123511935106 84.4583290688334 84.57731357842981 84.64001975169847 84.69254014823527 84.78361694518577 84.80964592831124 85.0013931397251 85.77802732285687 86.16667110835381 86.6507987140112 87.15995012326647 87.1693273433818 87.64819774152745 88.12810651917165 88.1635666549537 88.39484242695286 88.699250714622 88.95799859658362 89.22365904725656 89.5023950864972 89.56642948914221 89.5908711471268 90.1954420978816 90.86865751119002 91.13767535032102 91.16233642758492 91.33728200670521 91.42684833824322 91.48305547617124 92.03641541828524 92.28178055645301 92.74868015593714 93.08346249228143 93.26510377146722 93.35201690503817 93.3961407509032 93.58364372740381 93.87839584794268 94.4090722480329 94.90619130147407 95.13781643440865 95.29169382792654 97.64679063780055
Report typing (FPS) Baseline
Mean: 60.000 FPS
Stdev: 0.000 FPS (0.0%)
Runs: 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60

Current
Mean: 60.000 FPS
Stdev: 0.000 FPS (0.0%)
Runs: 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60
Report typing (RAM) Baseline
Mean: 451.652 MB
Stdev: 7.064 MB (1.6%)
Runs: 435.15748355263156 437.7265625 439.0699013157895 440.21015625 440.3344983552632 440.7933799342105 442.24013157894734 442.59609375 443.3793174342105 443.74013157894734 444.43832236842104 444.6458984375 445.15316611842104 446.6896484375 448.0667613636364 448.3324032738095 448.8 449.05059523809524 449.2178199404762 450.68482730263156 452.03980654761904 452.2775213068182 452.50205592105266 452.61346726190476 453.1709449404762 453.27808779761904 453.2842261904762 453.80784970238096 453.9009765625 453.96484375 454.14136904761904 454.21590909090907 454.6640625 454.72488839285717 454.85546875 454.93433779761904 454.9900568181818 455.21413352272725 455.2396484375 455.767578125 457.2241443452381 457.29048295454544 457.4892578125 457.5777698863636 457.6305042613636 457.71372767857144 457.7719494047619 458.4609375 459.87220982142856 461.5688244047619 463.75703125 463.8712713068182 467.38991477272725

Current
Mean: 446.029 MB
Stdev: 6.639 MB (1.5%)
Runs: 434.421875 435.0404575892857 436.01283482142856 436.0766858552632 436.3186677631579 436.6450892857143 437.2092013888889 437.4796875 437.7529761904762 438.14432565789474 438.5840773809524 438.5941220238095 439.1880580357143 439.24200148809524 439.3841145833333 439.90645559210526 440.1439144736842 440.1537828947368 440.6264880952381 441.81473214285717 442.2139136904762 442.61941964285717 442.7880345394737 443.03199404761904 444.55983664772725 444.97286184210526 445.99136513157896 445.9950657894737 446.33487215909093 446.74112215909093 446.7505859375 447.0731907894737 447.4137073863636 447.5836292613636 447.78267045454544 448.2581676136364 448.65078125 448.7876953125 448.94215029761904 449.62801846590907 450.6125 450.6996299342105 450.82890625 451.1712582236842 452.32173295454544 452.7552734375 452.9650390625 453.6078125 453.6490234375 453.7400568181818 453.8665707236842 453.8763671875 454.1216517857143 454.68235085227275 454.6954900568182 455.00859375 455.2275904605263 455.652734375 456.5855263157895 456.83895596590907
Report typing (CPU/JS) Baseline
Mean: 0.000 %
Stdev: 0.000 % (NaN%)
Runs: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Current
Mean: 0.000 %
Stdev: 0.000 % (NaN%)
Runs: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Report typing (CPU/UI) Baseline
Mean: 21.922 %
Stdev: 0.816 % (3.7%)
Runs: 19.9 20.2 20.6 20.7 20.8 20.8 20.8 21 21.2 21.2 21.2 21.2 21.3 21.4 21.5 21.5 21.5 21.6 21.6 21.7 21.7 21.7 21.8 21.8 21.9 21.9 21.9 21.9 22 22 22 22.1 22.1 22.2 22.2 22.3 22.4 22.4 22.4 22.5 22.5 22.5 22.5 22.7 22.8 22.8 22.9 22.9 22.9 22.9 23 23.1 23.5 23.9

Current
Mean: 21.666 %
Stdev: 0.712 % (3.3%)
Runs: 20 20 20.2 20.3 20.6 20.8 20.8 21 21 21 21.1 21.1 21.1 21.1 21.1 21.2 21.2 21.3 21.3 21.3 21.4 21.4 21.6 21.6 21.6 21.6 21.6 21.7 21.8 21.8 21.8 21.8 21.9 21.9 22 22 22 22 22 22 22 22 22.1 22.2 22.2 22.2 22.2 22.2 22.3 22.4 22.4 22.5 22.6 22.6 22.6 22.7 23.1 23.3

@github-actions

Copy link
Copy Markdown
Contributor

@Expensify/mobile-deployers 📣 Please look into this performance regression as it's a deploy blocker.

@mountiny mountiny removed the DeployBlockerCash This issue or pull request should block deployment label Jun 2, 2025
@mountiny

mountiny commented Jun 2, 2025

Copy link
Copy Markdown
Contributor

Skipping the tests for now as they are flaky https://github.com/Expensify/App/pull/63259/files

@github-actions

github-actions Bot commented Jun 2, 2025

Copy link
Copy Markdown
Contributor

🚀 Deployed to staging by https://github.com/mountiny in version: 9.1.55-0 🚀

platform result
🖥 desktop 🖥 success ✅
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

@github-actions

github-actions Bot commented Jun 3, 2025

Copy link
Copy Markdown
Contributor

🚀 Deployed to staging by https://github.com/mountiny in version: 9.1.56-2 🚀

platform result
🖥 desktop 🖥 success ✅
🕸 web 🕸 success ✅
🤖 android 🤖 failure ❌
🍎 iOS 🍎 success ✅

@github-actions

github-actions Bot commented Jun 3, 2025

Copy link
Copy Markdown
Contributor

🚀 Deployed to staging by https://github.com/mountiny in version: 9.1.58-0 🚀

platform result
🖥 desktop 🖥 success ✅
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

@github-actions

github-actions Bot commented Jun 4, 2025

Copy link
Copy Markdown
Contributor

🚀 Deployed to production by https://github.com/roryabraham in version: 9.1.58-4 🚀

platform result
🖥 desktop 🖥 success ✅
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants